Streaming media is data that can be progressively played to a user as it is transmitted, without the need for first being downloaded in entirety. Taking an MPEG-1 audio layer III (MP3) streaming media for example, it is an ISO/IEC (International Organization for Standardization and International Electrotechnical Commission) standard of audio coding with high quality and high efficiency. Streaming media is often used to transmit audio-visual (AV) data, such as live news broadcasts. Some of the most common streaming servers are Microsoft Media Player, Quick Time and RealNetworks RealPlayer.
Referring to FIG. 1, related art streaming media consists of a collection of packets or data blocks, where every block consists of a sequence of frames, herein described as data sets. Each data set comprises several fields such as a header 1, including a synchronization information (SI) header and a bit stream information (BSI) header, an error check field 2, a multimedia_data field 3, and an external_data 4. The bit stream information (BSI) header follows the SI header, and contains parameters describing the coded audio/visual service. The multimedia data field contains the encoded multimedia data, i.e. audio samples or video samples. The SI and BSI fields describe the bitstream configuration, including sample rate, data rate, number of coded channels, and several other systems-level elements. A protection bit discloses whether error protection is used in the set of data. The error check information in the error check field could be generated from using a message digest 5 (MD5) algorithm or other known error checking algorithms.
While using the error check is not necessary to encode and decode a data set of the streaming media, as with any error trapping routine, error checking can improve performance by correcting or eliminating faulty data sets (frames) before playing. The error check can be used to determine if the data set has been written and read correctly and is quite useful for providing accurate reproduction of sound/video, but is most valuable only if used in a consistent manner.
Different encoders can generate different error check fields although the input source is the same. Some encoders may possibly use a wrong generator polynomial, a wrong initial state, or simply calculate incorrectly, all resulting in a wrong error check value. Because of this, the error check field encoded by one encoder is not always acceptable to a different decoder. Additionally, some encoders simply skip using error checking and mark the protection bit of the header with a 1 meaning that no error check field exists within the data set to be processed.
Different stream media decoders deal with this problem with different approaches. One of the most common strategies used is simply not to play data sets with wrong error check fields. This policy does eliminate the noise resulting from individual corrupted data sets. However, this same policy makes it impossible to play a data set generated by an incompatible encoder or a data set simply lacking fields even though all of the other data in the data set is complete and correct. Therefore, this approach limits the streaming media that can be played by the decoder to only those streaming media perfectly compatible with the right message digest protection.
Another well-known approach to the incompatibility problem is to go to the other extreme and never use error check protection regardless whether the protection is or is not available. While this strategy allows the playing of all data sets of the streaming media regardless of the encoders, the strategy fails to eliminate noise resulting from corrupted data sets within a compatible bitstream.